##if语句的条件测试核心
#每条if语句的核心都是一个值为True或False的表达式，这种表达式被称为条件测试
#Python根据条件测试的值为True还是False来决定是否执行if语句中的代码
#如果条件测试的值为True，Python就执行紧跟在if语句后面的代码
#如果为False，Python就忽略这些代码

#example1：检查是否相等
'''
>>>car = 'bmw'
>>>car == 'bmw'
True

>>>car = 'audi'
>>>car == 'bmw'
False

'''


##检查是否相等时不考虑大小写
#在Python中检查是否相等时区分大小写，例如，两个大小写不同的值会被视为不相等

#example2
'''
>>>car = 'Audi'
>>>car == 'audi'
False

'''
#如果大小写很重要，这种行为有其优点
#但如果大小写无关紧要，而只想检查变量的值，可将变量的值转换为小写，再进行比较

#example3
'''
>>>car = 'Audi'
>>>car.lower() == 'audi'
True
>>>car
'Audi'

'''
#无论值'Audi'的大小写如何，上述测试都将返回True，因为该测试不区分大小
#函数lower()不会修改存储在变量car中的值，因此进行这样的比较时不会影响原来的变量


##检查是否不相等
#要判断两个值是否不等，可结合使用惊叹号和等号（!=），其中的惊叹号表示不，在很多编程语言中都如此

#example4
requested_topping = 'mushrooms'

if requested_topping != 'anchovies':
	print("Hold the anchovies!")
#代码行将requested_topping的值与'anchovies'进行比较
#如果它们不相等，Python将返回True，进而执行紧跟在if语句后面的代码
#如果这两个值相等，Python将返回False，因此不执行紧跟在if语句后面的代码
#由于requested_topping的值不是'anchovies'，因此执行print语句
#编写的大多数条件表达式都检查两个值是否相等，但有时候检查两个值是否不等的效率更高


##比较数字
#检查两数字是否相等

#example5
'''
>>>age = 18
>>>age == 18
True

'''

#检查两个数字是否不等

#example6
answer = 17

if answer != 2:
	print("That is not the correct answer.Please try again!")
#answer（17）不是42 ，条件得到满足，因此缩进的代码块得以执行

#条件语句中可包含各种数学比较，如小于、小于等于、大于、大于等于

#example7
'''
>>> age = 19 
>>> age < 21
True 

>>> age <= 21
True

>>> age > 21
False

>>> age >= 21
False
'''


##检查多个条件
#有时候你需要在两个条件都为True时才执行相应的操作
#而有时候你只要求一个条件为True时就执行相应的操作
#在这些情况下，关键字and和or可助你一臂之力
#要检查是否两个条件都为True，可使用关键字and将两个条件测试合而为一
#如果每个测试都通过了，整个表达式就为True；如果至少有一个测试没有通过，整个表达式就为False

#example8:使用and检查多个条件
'''
>>>age_0 = 22
>>>age_1 = 18
>>>age_0 >= 21 and age_1 >= 21
False

>>>age_1 = 22
>>>age_0 >= 21 and age_1 >= 21
True

'''
#定义了两个用于存储年龄的变量：age_0 和age_1
#检查这两个变量是否都大于或等于21:左边的测试通过了，但右边的测试没有通过
#因此整个条件表达式的结果为False
#将age_1改为22，这样age_1的值大于21，因此两个测试都通过了
#导致整个条件表达式的结果为True
#为改善可读性，可将每个测试都分别放在一对括号内，但并非必须这样做
#如果你使用括号，测试将类似于下面这样
#(age_0 >= 21) and (age_1 >= 21)

#example9:使用or检查多个条件
#关键字or也能够让你检查多个条件，但只要至少有一个条件满足，就能通过整个测试
#仅当两个测试都没有通过时，使用or的表达式才为False

#example9
'''
>>>age_0 = 22
>>>age_1 = 18
>>>age_0 >= 21 or age_1 >= 21
True

>>>age_0 = 18
>>>age_0 >= 21 or age_1 >= 21
False

'''
#同样，我们首先定义了两个用于存储年龄的变量,对age_0的测试通过了
#因此整个表达式的结果为True,接下来，我们将age_0减小为18
#两个测试都没有通过，因此整个表达式的结果为False


##检查特定值是否包含在列表中
#有时候，执行操作前必须检查列表是否包含特定的值
#要判断特定的值是否已包含在列表中，可使用关键字in

#example10
'''
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'mushrooms' in requested_toppings
True

>>> 'pepperoni' in requested_toppings
False

'''
#关键字in让Python检查列表requested_toppings是否包含'mushrooms'和'pepperoni'
#这种技术很有用，它让你能够在创建一个列表后，轻松地检查其中是否包含特定的值


##检查特定值是否不包含在列表中
#还有些时候，确定特定的值未包含在列表中很重要，在这种情况下，可使用关键字not in

#example11
banned_users = ['andrew', 'carolina', 'david']
user = 'marie'

if user not in banned_users:
	print(f"{user.title()}, you can post a response if you wish.")
#如果user的值未包含在列表banned_users中，Python将返回True，进而执行缩进的代码行
#用户'marie'未包含在列表banned_users中，因此她将看到一条邀请她发表评论的消息


##布尔表达式
#术语布尔表达式不过是条件测试的别名
#与条件表达式一样，布尔表达式的结果要么为True，要么为False
#布尔值通常用于记录条件，如游戏是否正在运行，或用户是否可以编辑网站的特定内容

#example12
game_active = True
can_edit = False
#在跟踪程序状态或程序中重要的条件方面，布尔值提供了一种高效的方式
